package com.ktgj.service.service;

import com.ktgj.customer.api.domain.Customer;
import com.ktgj.service.domain.OrderBoarding;
import com.ktgj.service.domain.OrderitemBoarding;
import com.ktgj.service.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 值机订单
Service接口
 * 
 * @author ruoyi
 * @date 2021-09-03
 */
public interface IOrderBoardingService 
{
    /**
     * 查询值机订单

     * 
     * @param orderboardingId 值机订单
ID
     * @return 值机订单

     */
    public OrderBoarding selectOrderBoardingById(Long orderboardingId);

    /**
     * 查询值机订单
列表
     * 
     * @param orderBoarding 值机订单

     * @return 值机订单
集合
     */
    public List<OrderBoarding> selectOrderBoardingList(OrderBoarding orderBoarding);

    /**
     * 值机订单  查看详情
     * @param orderboardingId 值机订单ID
     * @return 值机订单
     * */
    public OrderBoarding selectOrderBoardingByOrderboardingId(Long orderboardingId);

    /**
     * 新增值机订单

     * 
     * @param orderBoarding 值机订单

     * @return 结果
     */
    public int insertOrderBoarding(OrderBoarding orderBoarding);

    /**
     * 修改值机订单

     * 
     * @param orderBoarding 值机订单

     * @return 结果
     */
    public int updateOrderBoarding(OrderBoarding orderBoarding);

    /**
     * 批量删除值机订单

     * 
     * @param orderboardingIds 需要删除的值机订单
ID
     * @return 结果
     */
    public int deleteOrderBoardingByIds(Long[] orderboardingIds);

    /**
     * 删除值机订单
信息
     * 
     * @param orderboardingId 值机订单
ID
     * @return 结果
     */
    public int deleteOrderBoardingById(Long orderboardingId);

    /**
     * 值机订单与值机订单详细新增
     * @param orderBoarding  值机对象
     * @return 结果
     * */
    public int insertOrderBoardingAndOrderitemBoarding(OrderBoarding orderBoarding);

    /**
     * 查询会员值机订单
     * */
    public List<OrderBoarding> selectOrderBoardingByCustomer(Customer customer, Long type);

    /**
     * 查询登机牌票量数据
     * */
    public BoardingPassVo selectOrderBoardingNum(Long customerId) throws Exception;

    /**
     * 值机选座
     * */
    public int addOrderBoarding(OrderBoardingVo orderBoardingVo) throws Exception;

    /**
     * 登机牌订单列表
     * */
    public List<OrderBoarding> selectVipchannelOrederList(VipchannelOrederParameterVo vipchannelOrederParameterVo);

    /**
     * 登机牌订单详细
     * */
    public OrderViphallDetailsVo selectBoarding(Long orderId, String orderNum) throws Exception;

    /**
     * 行程值机订单
     * */
    public JourneyOrderBoardingVo selectOrderBoardingDetailed(Long orderboardingId);

    /**
     * 值机退单
     * */
    public int chargebackOrderBoarding(Long orderboardingId);

    public int queryVipBoardingOrderNumber(Long customerId);

    /**
     * 订单号获取值机订单信息
     * */
    public OrderBoarding orderBoarding(String orderNum);
}
